<?php
class PedidosController extends AppController
{
	var $name='Pedidos';
	var $uses =array('Menu','Producto','Pago','Pedido','Temporal','Cliente','Direccione','User','Tipo','Dato');
	var $helpers = array('Html','Form','Ajax','Javascript');
	var $components = array('SwiftMailer');
	
	
	function beforeFilter()
	{
		if(!$this->Session->read('idUser'))
		{
			$this->Session->setFlash('Debes ingresar al sistema');
			$this->redirect(array('controller'=>'menus','action'=>'index'));
		}
	}
	
	function index($productoNombre=null)
	{
		$this->set('tipos',$this->Tipo->find('list',array('fields'=>array('nombre'))));
		$fechaDia=date('0000-00-00 H:i:s');
		$fechaDate=date('Y-m-d');
		//$productosPrincipal=$this->Producto->Menu->find('all',array('conditions'=>array('Menu.fecha'=>$fechaDate)));
		$productosPrincipal=$this->Producto->Menu->find('all',array('conditions'=>array('Menu.fecha'=>$fechaDate)));
		$this->set('productosPrincipal',$productosPrincipal);
		$this->set('formasPago',$this->Pago->find('all'));
		$montoMinimo=str_replace('.',',', $this->Dato->field('montominimo',array('id'=>1)));
		//$this->set('montoMinimo',$this->Dato->field('montominimo',array('id'=>1)));
		$this->set('montoMinimo',$montoMinimo);
		if($this->Session->read('idUser')){
			$this->set('pedidosCliente',$this->Temporal->find('all',array('conditions'=>array('user_id'=>$this->Session->read('idUser')))));
			$montoAcumulado=$this->Temporal->field('SUM(costo)',array('user_id'=>$this->Session->read('idUser')));
			$this->set('montoAcumulado',$montoAcumulado);
		}
	}
	function productosCategoria()
	{
		$id=$_REQUEST["id"];
		//$productosRelacionados=$this->Producto->find('all',array('conditions'=>array('tipo_id'=>$id)));
		$fechaDate=date('Y-m-d');
		$productosRelacionados=$this->Menu->find('all',array(
			'conditions'=>array('Menu.fecha'=>$fechaDate),
			'contain'=>array(
				'Producto'=>array(
					'conditions'=>array('Producto.tipo_id'=>$id)
				)
			)
		));
		
		$this->set('productosRelacionados',$productosRelacionados);
	}
	function contornosCategoria()
	{
		$id=$_REQUEST["id"];
		$tipo_plato=$this->Producto->field('tipo_id',array('id'=>$id));
		if($tipo_plato==5 || $tipo_plato==6 || $tipo_plato==8) // si es carne, pollo o pescado, envio los contornos
		{
			$this->set("contornosRelacionados",$this->Producto->find('all',array('conditions'=>array('tipo_id'=>2))));
		}
	}
	function costoItem()
	{
		if($_REQUEST["id"] && $_REQUEST["cant"])
		{
			$id=$_REQUEST["id"];
			$cantidad=$_REQUEST["cant"];
			$valorUnidad=$this->Producto->field('valor',array('id'=>$id));
			$valorTotal=$cantidad*$valorUnidad;
			$this->set("valorTotal",$valorTotal);
			$this->set("valorUnidad",$valorUnidad);
		}
	}
	function costoItemUnitario()
	{
		if($_REQUEST["id"] && $_REQUEST["cant"])
		{
			$id=$_REQUEST["id"];
			$cantidad=$_REQUEST["cant"];
			$valorUnidad=$this->Producto->field('valor',array('id'=>$id));
			//$valorTotal=$cantidad*$valorUnidad;
			//$this->set("valorTotal",$valorTotal);
			$this->set("valorUnidad",$valorUnidad);
		}
	}
	
	function agregarItem()
	{
		$plato=$_REQUEST["principal"];
		$cantidad=$_REQUEST["cant"];
		$costo=$_REQUEST["precio"];
		$costoUnitario=$_REQUEST["preciounitario"];
		$nombre=$this->Producto->field('nombre',array('id'=>$plato));
		$this->Temporal->query('insert into temporals (principal,primercontorno,segundocontorno,costo,unitario,user_id,cantidad)
					values(
						"'.$nombre.'",
						"No Aplica",
						"No Aplica",
						"'.$costo.'",
						"'.$costoUnitario.'",
						'.$this->Session->read('idUser').',
						"'.$cantidad.'")');
		$this->set('pedidosTemporal',$this->Temporal->find('all',array('conditions'=>array('user_id'=>$this->Session->read('idUser')))));
		$montoAcumulado=$this->Temporal->field('SUM(costo)',array('user_id'=>$this->Session->read('idUser')));
		$this->set('montoAcumulado',$montoAcumulado);
		$this->set('montoMinimo',$this->Dato->field('montominimo',array('id'=>1)));
	}
	
	function agregarItemContorno()
	{
		$plato=$_REQUEST['principal'];
		$cantidad=$_REQUEST['cant'];
		$costo=$_REQUEST['precio'];
		$costoUnitario=$_REQUEST["preciounitario"];
		$primerContorno=$_REQUEST['primcontorno'];
		$segundoContorno=$_REQUEST['segcontorno'];
		$nombre=$this->Producto->field('nombre',array('id'=>$plato));
		$nombrePrimeroContorno=$this->Producto->field('nombre',array('id'=>$primerContorno));
		$nombreSegundoContorno=$this->Producto->field('nombre',array('id'=>$segundoContorno));
		$this->Temporal->query('insert into temporals (principal,primercontorno,segundocontorno,costo,unitario,user_id,cantidad)
					values(
						"'.$nombre.'",
						"'.$nombrePrimeroContorno.'",
						"'.$nombreSegundoContorno.'",
						"'.$costo.'",
						"'.$costoUnitario.'",
						'.$this->Session->read('idUser').',
						"'.$cantidad.'")');
		$this->set('pedidosTemporal',$this->Temporal->find('all',array('conditions'=>array('user_id'=>$this->Session->read('idUser')))));
		$montoAcumulado=$this->Temporal->field('SUM(costo)',array('user_id'=>$this->Session->read('idUser')));
		$this->set('montoAcumulado',$montoAcumulado);
		$this->set('montoMinimo',$this->Dato->field('montominimo',array('id'=>1)));
	}
	
	function eliminaTemporal($idTemporal=null)
	{
		if(!$idTemporal)
		{
			$this->Session->setFlash('Operacion Invalida, Intente nuevamente');
			$this->redirect(array('pedidos'=>'index'),null,true);
		}
		if($idTemporal!=null)
		{
			if ($this->Session->read('idUser')){
				$this->Temporal->query('delete from temporals where id='.$idTemporal.'');
				//$this->set('pedidosTemporal',$this->Temporal->find('all',array('conditions'=>array('user_id'=>$this->Session->read('idUser')))));
				$this->redirect('/pedidos/index');
			}
		}
	}
	
	
	function confirmar()
	{
		$idCliente=$this->Session->read('idUser');
		$temporalPedido=$this->Temporal->find('all',array('conditions'=>array('user_id'=>$idCliente)));
		if(!empty($temporalPedido))
		{
			$this->set('idCliente',$idCliente);
			$idDireccion=$this->Cliente->field('direccione_id',array('user_id'=>$idCliente));
			$nombreTorre=$this->Direccione->field('torre',array('id'=>$idDireccion));
			$this->set('nombreTorre',$nombreTorre);
			
			
			$clientePedido=$this->Cliente->find('first',array('conditions'=>array('user_id'=>$idCliente)));
			$this->set('clientePedido',$clientePedido);
			$userPedido=$this->User->find('first',array('conditions'=>array('id'=>$idCliente)));
			$this->set('userPedido',$userPedido);
			
			
			$this->set('pedidosCliente',$this->Temporal->find('all',array('conditions'=>array('user_id'=>$idCliente))));	
			$totalPagar=$this->Temporal->field('SUM(costo)',array('user_id'=>$idCliente));
			$this->set('totalPagar',(int)$totalPagar);
			$idTipoPago=$this->data['Pedido']['tipoPago'];
			$this->set('idTipoPago',$idTipoPago);
			$this->set('tipoPago',$this->Pago->field('metodo',array('id'=>$idTipoPago)));
			$this->set('formaEntrega',$this->data['Pedido']['delivery']);
			$this->set('comentarioPedido',$this->data['Pedido']['comentario']);
		}
		else
		{
			$this->Session->SetFlash('Debe Seleccionar Items para su Pedido');
			$this->redirect('/pedidos/index');
		}
	}
	
	function guardarPedido()
	{
		if (!empty($this->data))
		{
			$this->Pedido->create();
			$this->Pedido->set($this->data);
			$idCliente=$this->data['Pedido']['cliente_id'];
			if($this->Pedido->save($this->data))
			{
				$idPedido=$this->Pedido->id;
				$pedidosTemporal=$this->Temporal->find('all',array('conditions'=>array('user_id'=>$idCliente)));
				foreach($pedidosTemporal as $pedidoTemporal)
				{
					$idProducto=$this->Producto->field('id',array('nombre'=>$pedidoTemporal['Temporal']['principal']));
					if($idProducto!=0 && $pedidoTemporal['Temporal']['principal']){
						$this->Producto->query('insert into pedidos_productos (pedido_id,producto_id,cantidad) values("'.$idPedido.'","'.$idProducto.'",'.$pedidoTemporal['Temporal']['cantidad'].')');
					}
					$idProductoPrimerContorno=$this->Producto->field('id',array('nombre'=>$pedidoTemporal['Temporal']['primercontorno']));
					if($idProducto!=0 && $pedidoTemporal['Temporal']['primercontorno']!="No Aplica"){
						$this->Producto->query('insert into pedidos_productos (pedido_id,producto_id,cantidad) values("'.$idPedido.'","'.$idProductoPrimerContorno.'",'.$pedidoTemporal['Temporal']['cantidad'].')');
					}
					$idProductoSegundoContorno=$this->Producto->field('id',array('nombre'=>$pedidoTemporal['Temporal']['segundocontorno']));
					if($idProducto!=0 && $pedidoTemporal['Temporal']['segundocontorno']!="No Aplica"){
						$this->Producto->query('insert into pedidos_productos (pedido_id,producto_id,cantidad) values("'.$idPedido.'","'.$idProductoSegundoContorno.'",'.$pedidoTemporal['Temporal']['cantidad'].')');
					}
				}
				$this->Session->write('textPedido','Pedido Enviado, Gracias');
				$this->Temporal->deleteAll(array('user_id'=>$idCliente));
				$this->mailResumen($idCliente,$idPedido);
			}
			else{
				$this->Session->write('textPedido','Pedido no enviado, intente de nuevo');
			}
		}
		else{
			$this->Session->write('textPedido','Pedido no enviado, intente de nuevo');
		}
	}
	
	function mailResumen($idCliente,$idPedido)
	{
	
		$this->User->recursive=1;
		$this->Pedido->recursive=1;
		$this->User->id=$idCliente;
		$this->Pedido->id=$idPedido;
		$correo=$this->Cliente->field('mail',array('user_id'=>$idCliente));
		
		//$correo=$this->Cliente->field('firts',array('user_id'=>$idCliente));
	
		$this->SwiftMailer->smtpType = 'ssl'; 
        $this->SwiftMailer->smtpHost = 'mail.prontodelicafe.com'; 
        $this->SwiftMailer->smtpPort = 465; 
        $this->SwiftMailer->smtpUsername = 'admin@prontodelicafe.com'; 
        $this->SwiftMailer->smtpPassword = 'mrubertelli'; 
        $this->SwiftMailer->sendAs = 'html'; 
        $this->SwiftMailer->from = 'admin@prontodelicafe.com'; 
        $this->SwiftMailer->fromName = 'Resumen de Pedido'; 
		$this->SwiftMailer->to = $correo;
		
		
		
		$nombreCliente=$this->User->field('nombre',array('id'=>$idCliente));
		$idDireccion=$this->Cliente->field('direccione_id',array('user_id'=>$idCliente));
		$nombreTorre=$this->Direccione->field('torre',array('id'=>$idDireccion));
		$pisoCliente=$this->Cliente->field('piso',array('user_id'=>$idCliente));
		$oficinaCliente=$this->Cliente->field('oficina',array('user_id'=>$idCliente));
		$telefonoCliente=$this->Cliente->field('telefono',array('user_id'=>$idCliente));
		
		$this->set('pedido',$this->Pedido->find('first'));
		$this->set('nombre',$nombreCliente);
		$this->set('nombreTorre',$nombreTorre);
		$this->set('piso',$pisoCliente);
		$this->set('oficina',$oficinaCliente);
		$this->set('telefono',$telefonoCliente);
		
		try { 
            if(!$this->SwiftMailer->send('resumen', 'Resumen de Pedido, Pronto Deli')) { 
                $this->log("Error Enviando Email");
				//return $retorno;
				//exit();
            } 
        } 
        catch(Exception $e) { 
              $this->log("Failed to send email: ".$e->getMessage());
		}
	}
}
?>